package in.model; import android.os.Parcel; import android.text.TextUtils; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.List; import in.lib.manager.SettingsManager; import in.lib.utils.CodeUtils; import in.lib.utils.Debug; import in.lib.utils.SerialReaderUtil; import in.lib.utils.SerialWriterUtil; import lombok.Data; @Data public class SimpleUser extends AdnModel { protected String username = ""; protected String firstName = ""; protected String lastName = ""; protected String avatarUrl; protected String formattedMentionNameTitle; protected String formattedMentionNameSubTitle; public String getFullname() { return new StringBuilder().append(firstName).append(" ").append(lastName).toString().trim(); } public SimpleUser createFrom(User user) { this.id = user.getId(); this.username = user.getUsername(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); this.avatarUrl = user.getAvatarUrl(); this.formattedMentionNameTitle = user.getFormattedMentionNameTitle(); this.formattedMentionNameSubTitle = user.getFormattedMentionNameSubTitle(); return this; } @Override public SimpleUser createFrom(JsonElement element) { try { JsonObject userObject = element.getAsJsonObject(); this.id = userObject.get("id").getAsString(); this.username = userObject.get("username").getAsString(); if (userObject.has("name")) { String fullName = userObject.get("name").getAsString(); String[] parts = fullName.split("\\s"); this.firstName = (parts.length > 0 ? parts[0] : getUsername()); if (parts.length > 1) { StringBuilder lastNameBuilder = new StringBuilder(); for (int index = 1; index < parts.length; index++) { if (lastNameBuilder.length() > 0) { lastNameBuilder.append(" "); } if (!TextUtils.isEmpty(parts[index])) { lastNameBuilder.append(parts[index]); } } this.lastName = lastNameBuilder.toString(); } } else { this.firstName = ""; this.lastName = ""; } String[] formattedName = CodeUtils.compileUserTitle(SettingsManager.getInstance().getUserTitle(), this); this.formattedMentionNameTitle = formattedName[0]; this.formattedMentionNameSubTitle = formattedName.length > 1 ? formattedName[1] : ""; this.avatarUrl = userObject.get("avatar_image").getAsJsonObject().get("url").getAsString(); return this; } catch (Exception e) { Debug.out(e); } return null; } @Override public SimpleUser createFrom(Parcel parcel) { super.createFrom(parcel); return this; } @Override public List<? extends SimpleUser> createListFrom(JsonElement element) { if (element != null) { try { JsonArray userArray = element.getAsJsonArray(); ArrayList<SimpleUser> users = new ArrayList<SimpleUser>(userArray.size()); for (JsonElement userElement : userArray) { SimpleUser user = new SimpleUser().createFrom(userElement); if (user != null) { users.add(user); } } return users; } catch (Exception e) { Debug.out(e); } } return null; } @Override public String getVersion() { return "1a16bdf8-2bff-4705-8098-23b6531fb8e7"; } @Override public SimpleUser read(SerialReaderUtil util) { if (super.read(util) != null) { try { String version = util.readString(); if (!version.equals(getVersion())) return null; this.username = util.readString(); this.firstName = util.readString(); this.lastName = util.readString(); this.avatarUrl = util.readString(); this.formattedMentionNameTitle = util.readString(); this.formattedMentionNameSubTitle = util.readString(); return this; } catch (Exception e) { Debug.out(e); } } return null; } @Override public void write(SerialWriterUtil util) { super.write(util); try { util.writeString(getVersion()); util.writeString(username); util.writeString(firstName); util.writeString(lastName); util.writeString(avatarUrl); util.writeString(formattedMentionNameTitle); util.writeString(formattedMentionNameSubTitle); } catch (Exception e) { Debug.out(e); } } @Override public boolean equals(Object object) { if (object == null) { return false; } if ((object == this) || (object instanceof SimpleUser && ((SimpleUser)object).getId().equals(getId()))) { return true; } return false; } public static final Creator<SimpleUser> CREATOR = new Creator<SimpleUser>() { @Override public SimpleUser[] newArray(int size) { return new SimpleUser[size]; } @Override public SimpleUser createFromParcel(Parcel source) { return new SimpleUser().createFrom(source); } }; }